暑训最后一场组队训练赛,特么故意的,把别人的WF练习题给我们写,写了半天才签到两题。靠!
B - Braess’s Paradox
题意:有几个点,每个点到下一个点之间有两条路。上面一条路的通过时间是 AK1+B,下面一条通过时间是CK2+D,要两条路通过的时间数尽量相同,K1+K2=1(K1,K2是经过的人流量占总人数的比例)。然后中间的点可以建驿站,如果中间的点不建驿站,就相当于直接从起点到终点,只有两条路,如果建了驿站,就相当于从起点到驿站,再从驿站到终点。
题解:前两个直接算出来就行,一个驿站都不建,就相当于两条路,把所有点上面那条路,ai.bi,加起来就是上面那一条路的A,B,同理,下面一条路就是所有的,ci,di加起来。每个都建就是相当于一个个点走过去,暴力啊,一个点到另一个点的时间,然后全加起来就行了。后面两个就是求最小通过时间的和最大通过时间,看似很难,其实就是一个很简单的DP,N^2的复杂度不会超时。首先预处理从起点到当前点的A,B,C,D。然后每个点的时间就是从前面某一个点建驿站的最小值,最大值转移过来。直接过来上面路的A,B就用两个前缀相减。
1 | #include<iostream> |
I - Intelligent Tourist
题意:有N场考试,第i考试需要复习pi天,考试时间是di,考试的时间没法复习,如果没有复习多天那场考试就不会去,就会去复习其他考试,中间有些天有活动,活动时间是s-t活动时间不会去复习,问最多能通过机场考试。
题解:贪心,这题贼他妈傻逼,漏看了一个条件,DEBUG一个小时。。。,从后面往前面扫,每次选需要复习时间最少的一场考试,因为这个时间只能给后面的所以不用担心选的考试时间已经过了,至于考试时间不能复习,你直接把考试也当作复习的时间,不去考试就相当于少复习这种科目一天,去了就相当于多复习一天。。。
1 | #include<iostream> |